This invention relates to testing network applications or devices.
The background to the invention will be explained in relation to network management applications. Those skilled in the art will appreciate that the invention has wider application, however.
It is desired to test network management applications to show, for example, that they will work with large or very large networks, to determine the upper bounds of the applications capabilities, and to determine improvements which might, for example, increase the upper bounds.
There are a number of alternatives. One would be to construct a very large network for the specific purpose of testing the application. Another would be to test it on a customer's existing network. A third possibility would be to program a device simulator to simulate a large number of devices and to test the application against the simulator.
To construct a large network just for the purpose of testing an application would be extremely expensive, would require large amounts of lab space and would not be feasible for most testers. Setting up such a network is complex and prone to error.
Few customers would want to test a new unproven management application on their real live network. The implications of the discovery of problems (the reason for testing) are that the network may work less than satisfactorily.
Programming device simulators is a time consuming task and is highly complex, making it prone to error. In order to simplify the process most device simulators allow the user to define a template for simulating a specific device type and then use that to define specific instances of the devices. However, even this is of little help when trying to set up a large simulation, as there are huge numbers of values that need to be defined for multiple instances of a device type in order to correctly simulate a large network. Further problems with this approach are that it is difficult to capture in a simulator any idiosyncrasics that specific types of devices may have, preventing the system from accurately simulating devices. It is difficult to simulate network traffic and its effects upon the network management application within device simulators. When very large networks are being simulated, the device simulator itself may very quickly fail to cope with the load placed on it by the network management application.
Against this background, in accordance with the invention there is provided a method of testing a network application or device, comprising the steps of: providing a mapping of the layer-3 address of a real subnetwork onto a plurality of mapped layer-3 subnetwork addresses for conversations with the application or device; modifying a packet to change a destination layer-3 address in a mapped subnetwork, to point to the corresponding real layer-3 address and forwarding the packet on; identifying to which conversation a response from a real layer-3 address relates; modifying the source layer-3 address into the appropriate mapped subnetwork and forwarding the packet to the application or device with the conversation identity. In operation, an existing test network of any size may be used as the basis for testing the network management application. In an embodiment, a small driver, the “IP address mapping shim” (simply referred to as the shim hereafter), working within the network stack of the server running the network management application, maps one or more (usually private) IP subnets onto the real IP subnet of the test network. The former IP subnets are hereafter referred to as mapped subnets, while the latter subnet is hereafter referred to as the real subnet.
The preferred embodiment of the invention allows usage against a test network that has multiple real IP subnets associated with it.